Many video game systems display computer-generated objects to a player during game play. In some systems, the objects are constructed using a mesh of polygons, where the mesh is shaped to approximate an object to be displayed. For example, a sphere may consist of a generally round mesh of polygons. However, because the polygons in the mesh are not curved, the sphere appears to have a “blocky” surface instead of a smooth spherical surface.
In certain systems, the blocky appearance can be reduced by subdividing the surface of the mesh to increase the number of polygons so that the transition between the polygons is more difficult to visually perceive.
FIG. 1A is a schematic diagram illustrating an example technique 100 for generating subdivision surfaces. The general process of generating subdivision surfaces is one by which a subdivision equation is repeatedly applied to an original mesh 110, each time producing a more refined result. Certain systems use an algorithm for subdividing surfaces that is described in Catmull, Edwin and Clark, Jim. “Recursively generated B-spline surfaces on arbitrary topological surfaces”, Computer-Aided Design, 10(6) (1978):350-355, the entirety of which is incorporated by reference herewithin.
As described, the algorithm places a new vertex at the center of each original face, positioned as the average of the positions of the face's original vertices. New edge points are similarly placed at the center of each original edge, positioned at the calculated average of the center point of the original edge and the average of the locations of the two new adjacent face points. New edges are added to connect the new edge points to the new adjacent face points. As new face vertices and edge points are calculated, old (i.e., original) vertices are also moved in space to create higher resolution meshes. The old vertices P are repositioned to P′ according to the equation P′=Q/n+2×R/n+S×(n−3)/n, where Q is the average of the new face points surrounding the old vertex, R is the average of the midpoints of the edges that share the old vertex, S is the old vertex point, and n is the number of edges that share the old vertex.
For example, the Catmull-Clark Subdivision Surfaces algorithm can use an original mesh 110 and add a new vertex point 122 to the original face 112. New edge points 124a, 124b, 124c, and 124d can also be added to the edges 114a, 114b, 114c, and 114d, respectively by calculating an average between each point and the point's respective adjacent face point 128a, 128b, 128c, and 128d. The new vertex point 122 and new edge points 124a, 124b, 124c, and 124d, can be used as end points for the new edges 126a, 126b, 126c, and 126d. 
After one iteration of the algorithm, for example, the steps of calculating new edge points, new face points, and new edges can be done for each face and edge of the original mesh 110 generating a first subdivision surface mesh 120. The algorithm can be applied repeatedly generating an example mesh 130 on the fourth iteration of the subdivision surface algorithm using the same approach as described above. As the number of iterations approaches infinity, the divided mesh approaches a limit surface. However, this algorithm can be computationally expensive and may be difficult to accomplish in real-time.